/*
Pila.java
Autor: Paola Garcia, carnet 10205
Fecha: 20 agosto 2011
Descripcion: clase pila, que implemente a la interfaz
se encarga de realizar las operaciones. 
*/

import java.util.*;
import java.util.List;

public class Pila<T> extends Abstracta<T>{
	
	//Creacion del stack
	
	private List<T> stack = new LinkedList<T>();
	
	//Declaracion de variables
	
	protected T data;
	private T estado;
	private int var = 0;
	private int lista = 0;
	private boolean es = true;

	//Metodo para agregar un nuevo valor al stack
	
	public void push(T item){
		stack.add(item);
		var = var + 1;
	}
	

	//Metodo para sacar un nuevo valor del stack
	
	public T pop(){
		T estado;
		if(es){
			estado = stack.get(var - 2);
			es = false;
		}
		else{
			estado = stack.get(var - 1);
			
		}
		return estado;
	}


	//Metodo para retornar el proximo valor
	public T peek(){
		estado = stack.get(lista);
		return estado;
	
	}
	
	//borrar los elementos de la lista
	public void empty(){
		stack.clear();
		lista = 0;
		var = 0;
		es = true;
		
	}
	
	//Metodo para dividir dos numeros
	public double div(double uno, double dos){
		double resp;
		resp = uno / dos;
		return resp;	
	}
	
	
	//Metodo para multiplicar dos numeros
	public double mul(double uno, double dos){
		double resp;
		resp = uno * dos;
		return resp;	
	}
	
	//Metodo para restar dos numeros
	public double rest(double uno, double dos){
		double resp;
		resp = uno - dos;
		return resp;	
	}

	//Metodo para sumar dos numeros
	public double sum(double uno, double dos){
		double resp;
		resp = uno + dos;
		return resp;
		
	}
	

}
